#ifndef LOGIC_LIST_H
#define LOGIC_LIST_H

#include <iostream>
#include <string>
#include <vector>

#include "Data.h"
#include "Task.h"
#include "Writer.h"
#include "LogicBase.h"

#include <boost\date_time.hpp>

using namespace std;
using namespace boost::posix_time;
using namespace boost::gregorian;

class LogicList : public LogicBase {
public:
	static LogicList& getInstance();

	Display listAllTasks();
	Display listTaskBySearchTerm( string searchTerm );
	Display listTaskByDay( ptime day );
	Display listTaskByDate( ptime date );
	Display listTaskNextWeek( ptime week );
	Display listTaskByMonth( ptime month );
	Display listTaskByDone( bool done );

private:
	static const string LIST_SUCCESS_MESSAGE;
	static const string LIST_ERROR_MESSAGE;

	LogicList();
	static LogicList* _logicList;
};
#endif